#include <sstream>
#include <string>
#include <set>
#include <vector>
#include <map>

#include <iostream>

#include "types.h"

// Ищет первое словосочетание прилагательное + существительное
// Не умеет проверять согласование
// Нет полной уверенности, что вообще работает
class CStupidSynan {
public:

  virtual std::vector<group> Analyze(const std::vector<morph> &w) const {
    std::vector<group> v;
    group gr;
    bool bAdjFound = false;

    for (size_t i = 0; i < w.size(); ++i) {
      for (size_t j = 0; j < w[i].m.size(); ++j) {
        if (w[i].m[j].has_gram("ADJF")) {
          gr.s.pos = i;
          bAdjFound = true;
        } else if (bAdjFound && 1 == (i - gr.s.pos) && w[i].m[j].has_gram("NOUN")) {
          gr.s.len = 1;
          gr.mw = 1;
          gr.m[0] = std::pair<size_t, size_t>(0, 0); // тут надо подставлять осмысленное значение (из i, j и т.д.)
          gr.m[1] = std::pair<size_t, size_t>(0, 0); // тут тоже
          v.push_back(gr);
          gr.m.clear();
          break;
        }
      }
    }
    return v;
  }
};

// Ищет:
// - прилагательное + существительное (проверяет согласование по роду, числу и падежу
// - существительное + существительное в родительном падеже
// - наречие + глагол
class CMySynan {
public:

  virtual std::vector<group> Analyze(const std::vector<morph> &w) const {
    std::vector<group> v;
    // TODO: написать поиск синтаксических групп
    return v;
  }
};

